/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.edu.ifal.newnews.bd;

import br.edu.ifal.newnews.modelo.Categoria;
import br.edu.ifal.newnews.modelo.Postagem;
import br.edu.ifal.newnews.modelo.Usuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author ifal
 */
public class PostarBD {

    public ArrayList<Categoria> buscaTodasCategorias() throws SQLException {
        Connection c = new ConexaoBD().abreConexao();

        String sql = "select * from tbCategoria";
        PreparedStatement stmt = c.prepareStatement(sql);



        ResultSet rs = stmt.executeQuery();

        ArrayList<Categoria> lista = new ArrayList<Categoria>();
        while (rs.next()) {
            Categoria c1 = new Categoria();

            c1.setNome(rs.getString("nome"));
            c1.setDescricao(rs.getString("descricao"));
            lista.add(c1);
        }
        rs.close();
        stmt.close();
        c.close();

        return lista;
    }

    public void inserePostagem(Postagem postagem) throws SQLException {

        Connection c = new ConexaoBD().abreConexao();

        String sql = "insert into tbPostagem"
                + "(titulo,texto,codigo_categoria,codigo_cliente)"
                + "values (?,?,?,?)";

        PreparedStatement stmt = null;

        try {
            stmt = c.prepareStatement(sql);


            stmt.setString(1, postagem.getTitulo());
            stmt.setString(2, postagem.getTexto());
            stmt.setInt(3, postagem.getCodigo_categoria().getCodigo());
            stmt.setInt(4, postagem.getCodigo_cliente().getCodigo());

            stmt.execute();
            stmt.close();
        } catch (SQLException ex) {
            Logger.getLogger(UsuarioBD.class.getName()).log(Level.SEVERE, null, ex);

        } finally {
            c.close();
        }
    }

    public Usuario buscaUsuario(String email, String nome) throws SQLException {
        Connection c = new ConexaoBD().abreConexao();

        String sql = "select * from tbUsuario where email= ? and nome =?";
        PreparedStatement stmt = c.prepareStatement(sql);

        stmt.setString(1, email);
        stmt.setString(2, nome);


        ResultSet rs = stmt.executeQuery();
        Usuario c1 = new Usuario();

        while (rs.next()) {


            c1.setCodigo(rs.getInt("codigo"));

        }
        rs.close();
        stmt.close();
        c.close();

        return c1;
    }

    public Categoria buscaCategoriaPeloNome(String nome) throws SQLException {
        Connection c = new ConexaoBD().abreConexao();

        String sql = "select * from tbCategoria where nome = ?";
        PreparedStatement stmt = c.prepareStatement(sql);

        stmt.setString(1, nome);

        ResultSet rs = stmt.executeQuery();
        Categoria c1 = new Categoria();

        while (rs.next()) {


            c1.setCodigo(rs.getInt("codigo"));


        }
        rs.close();
        stmt.close();
        c.close();

        return c1;
    }

    public List<Postagem> buscaTodos() throws SQLException {

        Connection c = new ConexaoBD().abreConexao();
        String sql = "select * from tbPostagem";
        PreparedStatement stmt = c.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();

        List<Postagem> post = new ArrayList<>();
        while (rs.next()) {
            Postagem f = new Postagem();
            f.setTitulo(rs.getString("titulo"));
            f.setTexto(rs.getString("texto"));
            
            //f.setSalario(rs.getDouble("salario"));
            //cria um departamento para adicionar em funcionario
            Categoria d = new Categoria();
            d.setCodigo(rs.getInt("codigo_categoria"));
            f.setCodigo_categoria(d);
            
            Usuario u = new Usuario();
            u.setCodigo(rs.getInt("codigo_cliente"));
            f.setCodigo_cliente(u);
            post.add(f);
        }
        return  post;
    }
}
